// index/pages/freeResources/freeResources.js
const { http } = require('../../../utils/http.js');

// 配置选项 - 可以在这里调整后端服务地址
const API_CONFIG = {
  // 后端服务地址 - 根据您的实际后端服务地址修改
  BASE_URL: 'http://localhost:8080', // 如果后端运行在8080端口，请修改这里
};

// 创建自定义的HTTP实例，使用页面配置的BASE_URL
const customHttp = new (require('../../../utils/http.js').HttpUtil)({
  BASE_URL: API_CONFIG.BASE_URL
});

Page({
  data: {
    baseUrl: 'http://localhost:8080',
    token: '',
    resourceList: [],
    loading: false,
    hasMore: true,
    pageNum: 1,
    pageSize: 10,
    total: 0,
    searchKeyword: ''
  },

  onLoad() {
    // 获取用户token
    const token = wx.getStorageSync('token');
    if (token) {
      this.setData({ token: token });
    }
    
    // 加载资料列表
    this.loadResourceList();
  },

  onUnload() {
    // 清理数据
    this.setData({
      resourceList: [],
      pageNum: 1,
      total: 0
    });
  },

  /**
   * 加载免费资料列表
   */
  loadResourceList(isRefresh = false) {
    if (isRefresh) {
      this.setData({
        pageNum: 1,
        resourceList: [],
        hasMore: true
      });
    }

    if (!this.data.hasMore || this.data.loading) {
      return;
    }

    this.setData({ loading: true });

    const params = {
      pageNum: this.data.pageNum,
      pageSize: this.data.pageSize
    };

    // 添加搜索参数
    if (this.data.searchKeyword && this.data.searchKeyword.trim()) {
      params.title = this.data.searchKeyword.trim();
      console.log('添加搜索参数:', params.title);
    } else {
      console.log('没有搜索关键词，加载全部数据');
    }

    const requestUrl = `${this.data.baseUrl}/hyg/resource/list`;
    console.log('请求URL:', requestUrl);
    console.log('请求参数:', params);

    wx.request({
      url: requestUrl,
      method: 'GET',
      data: params,
      header: {
        'content-type': 'application/json',
        'Authorization': `Bearer ${this.data.token}`
      },
      success: (res) => {
        console.log('API响应:', res);
        if (res.statusCode === 200 && res.data.code === 200) {
          const newResources = res.data.rows || [];
          const updatedList = isRefresh ? newResources : [...this.data.resourceList, ...newResources];
          
          this.setData({
            resourceList: updatedList,
            total: res.data.total || 0,
            hasMore: newResources.length === this.data.pageSize,
            pageNum: this.data.pageNum + 1
          });
        } else {
          console.error('API返回错误:', res.data);
          wx.showToast({
            title: res.data.msg || '获取资料失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('网络请求失败:', err);
        console.error('错误详情:', {
          errMsg: err.errMsg,
          statusCode: err.statusCode,
          data: err.data
        });
        
        if (err.statusCode === 404) {
          wx.showToast({
            title: '接口不存在，请检查后端服务',
            icon: 'none',
            duration: 3000
          });
        } else if (err.statusCode === 500) {
          wx.showToast({
            title: '服务器内部错误',
            icon: 'none',
            duration: 3000
          });
        } else {
          wx.showToast({
            title: '网络错误，请重试',
            icon: 'none'
          });
        }
      },
      complete: () => {
        this.setData({ loading: false });
        if (isRefresh) {
          wx.stopPullDownRefresh();
        }
      }
    });
  },

  /**
   * 搜索资料
   */
  onSearch(e) {
    let keyword = '';
    
    // 如果是回车键触发的搜索，从e.detail.value获取
    if (e.detail && e.detail.value !== undefined) {
      keyword = e.detail.value;
    } else {
      // 如果是点击搜索图标触发的搜索，从当前输入框获取值
      // 通过选择器获取输入框的当前值
      const query = wx.createSelectorQuery();
      query.select('.search-input').fields({ properties: ['value'] });
      query.exec((res) => {
        if (res && res[0] && res[0].value) {
          keyword = res[0].value;
          console.log('从输入框获取搜索关键词:', keyword);
          
          this.setData({
            searchKeyword: keyword
          });
          
          // 执行搜索
          this.loadResourceList(true);
        } else {
          // 如果无法获取输入框值，使用存储的关键词
          keyword = this.data.searchKeyword || '';
          console.log('使用存储的搜索关键词:', keyword);
          
          this.setData({
            searchKeyword: keyword
          });
          
          // 执行搜索
          this.loadResourceList(true);
        }
      });
      
      // 直接返回，避免重复执行
      return;
    }
    
    console.log('执行搜索，关键词:', keyword);
    
    this.setData({
      searchKeyword: keyword
    });
    
    // 执行搜索
    this.loadResourceList(true);
  },

  /**
   * 搜索输入处理
   */
  onSearchInput(e) {
    const keyword = e.detail.value;
    this.setData({
      searchKeyword: keyword
    });
  },

  /**
   * 查看资料详情
   */
  toResourceDetail(e) {
    const id = e.currentTarget.dataset.id;
    const item = this.data.resourceList.find(resource => resource.id === id);
    
    if (item) {
      // 缓存资料信息
      wx.setStorageSync('freeResourceDetail', item);
      
      wx.navigateTo({
        url: `/index/pages/freeResourceDetail/freeResourceDetail?id=${id}`
      });
    }
  },

  /**
   * 下载资料
   */
  startDownload(e) {
    const index = e.currentTarget.dataset.index;
    const resource = this.data.resourceList[index];
    
    if (!resource || !resource.fileUrl) {
      wx.showToast({
        title: '下载链接无效',
        icon: 'none'
      });
      return;
    }

    wx.showLoading({
      title: '准备下载...'
    });

    // 调用下载接口
    wx.request({
      url: `${this.data.baseUrl}/hyg/resource/download/${resource.id}`,
      method: 'GET',
      header: {
        'Authorization': `Bearer ${this.data.token}`
      },
      success: (res) => {
        if (res.statusCode === 200) {
          // 下载成功，更新下载次数
          this.updateDownloadCount(resource.id);
          wx.showToast({
            title: '下载成功',
            icon: 'success'
          });
        } else {
          wx.showToast({
            title: res.data.msg || '下载失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('下载失败:', err);
        wx.showToast({
          title: '下载失败，请重试',
          icon: 'none'
        });
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  },

  /**
   * 更新下载次数
   */
  updateDownloadCount(resourceId) {
    // 这里可以调用后端接口更新下载次数
    // 暂时只在前端更新显示
    const resourceList = this.data.resourceList.map(item => {
      if (item.id === resourceId) {
        return {
          ...item,
          downloadCount: (item.downloadCount || 0) + 1
        };
      }
      return item;
    });
    
    this.setData({
      resourceList: resourceList
    });
  },

  /**
   * 格式化日期
   */
  formatDate(dateString) {
    if (!dateString) return '';
    
    const date = new Date(dateString);
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    
    return `${year}.${month}.${day}`;
  },

  /**
   * 获取文件类型
   */
  getFileType(fileUrl) {
    if (!fileUrl) return '未知';
    
    const extension = fileUrl.split('.').pop()?.toLowerCase();
    const typeMap = {
      'pdf': 'PDF文档',
      'doc': 'Word文档',
      'docx': 'Word文档',
      'xls': 'Excel表格',
      'xlsx': 'Excel表格',
      'ppt': 'PPT演示',
      'pptx': 'PPT演示',
      'txt': '文本文件',
      'zip': '压缩包',
      'rar': '压缩包',
      'jpg': '图片文件',
      'jpeg': '图片文件',
      'png': '图片文件',
      'gif': '图片文件'
    };
    
    return typeMap[extension] || '其他文件';
  },

  /**
   * 获取文件大小（模拟）
   */
  getFileSize(fileUrl) {
    if (!fileUrl) return '未知';
    
    // 这里可以根据实际需求从后端获取文件大小
    // 暂时返回模拟数据
    const sizes = ['1.2MB', '2.5MB', '856KB', '3.1MB', '1.8MB'];
    return sizes[Math.floor(Math.random() * sizes.length)];
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.loadResourceList(true);
  },

  /**
   * 触底加载更多
   */
  onReachBottom() {
    if (this.data.hasMore && !this.data.loading) {
      this.loadResourceList();
    }
  },

  /**
   * 分享页面
   */
  onShareAppMessage() {
    return {
      title: '免费资料 - 海量学习资源免费下载',
      path: '/index/pages/freeResources/freeResources'
    };
  }
});